#ifndef ICMP_HPP_
	#define ICMP_HPP_

	#define ICMP_HEAD_SIZE     		8		//!< Размер заголовка в байтах
	#define ICMP_TYPE_ECHO_RQ    	8
	#define ICMP_TYPE_ECHO_RPLY    	0


	//! @brief 					Метод формирует заголовок ip по заданному адресу
	/*!	@param		header		Начало заголовка
	 *	@param		data_size	Размер поля полезных данных
	 *  @return		0
	 */
	alt_u8 icmp_echo(alt_u8* header);



	//! Структура заголовка IP
	union	icmp_header_u
	{
		struct __attribute__((packed, aligned(1)))
		{
		    unsigned type	:8;
		    unsigned code	:8;
		    unsigned cksum	:16;
		    unsigned id		:16;
		    unsigned seq	:16;
		};
		alt_u8			data[ICMP_HEAD_SIZE];
	};

	/*
	typedef struct	dscp_s
	{
		alt_u8 prior		:3;			//!< Приоритет
		alt_u8 d			:1;			//!< Требование ко времени задержки
		alt_u8 t			:1;			//!< Требование к пропускной способности
		alt_u8 r			:1;			//!< Требование к надежности
	} dscp_t;

	typedef struct	tos_s
	{
		dscp_t	dscp;					//!< DiffServ Code Point
		alt_u8 	ecn			:2;			//!< Explicit Congestion Notification.
	} tos_t;
	*/

	//! Тип заголовка пакетов ip
	typedef union icmp_header_u 	icmp_header_t;




#endif /* ICMP_HPP_ */
